第8章 メッセージ認証コード
正真性を確認し、メッセージの認証を行う技術。message authentication codeなのでMACと呼ばれる。
任意長のメッセージと送信者と受信者が共有する鍵を元にして固定ビット長のMAC値と呼ばれる値を出力する。
https://gyazo.com/a40dab28e5c94e8a32f100a3e7b5810f
鍵配送問題
攻撃者に渡してはいけないので、公開鍵暗号やDiffie-Hellman鍵交換、鍵配布センターなどで安全に届ける必要がある。
利用例
SWIFT(Society for Worldwide Interbank Financial Telecommunication)(国際銀行間通信協会)
国際的な銀行間の送金を安全に行うための団体。
取引メッセージの正真性のチェックに使用。
IPsec
通信内容の認証と正真性のチェックで使用。
SSL/TLS
通信内容の認証と正真性のチェックで使用。
実現方法
一方向ハッシュ関数
ブロック暗号
AESを使ったAES-CMACなど。
ブロック暗号の鍵をメッセージ認証コードの共有鍵として使い、CBCモードを使ってメッセージ全部を暗号化する。
復号の必要がないので最終ブロック以外は破棄する。
公開鍵暗号
ストリーム暗号
認証付き暗号
Encrypt-then-MACでは平文を対称暗号を暗号化し、その後の暗号文のMAC値を検証する。
選択暗号文攻撃を防ぐことができる。
攻撃方法
再生攻撃
盗聴したMAC値を保存しておき、再度送ることで受信者を勘違いさせる。
対策
シーケンス番号
タイムスタンプ
ノンス
ブルートフォース
誕生日攻撃
メッセージ認証コードで解決できない問題
第三者に対する証明
否認防止